#ifndef __CUTILS_HEX_UTILS_H__
#define __CUTILS_HEX_UTILS_H__

#include <stdio.h>

#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus

/**
 * @brief 将16进制字符串转换为16进制数值的数组，
 * 字符串的尾零不会被转换。
 * 
 * @param byte byte 的长度是 hex_str 长度的一半即可。
 */
extern ssize_t convert_hexstr_to_byte(const char *hex_str, unsigned char *byte);

/**
 * @brief 显示 data 的十六进制值，类似命令 hexutils -C 的效果。
 */
extern void show_hex(const char *tag, const void *data, size_t len);

/**
 * @brief 将数据转换为16进制字符串
 * 需要注意的是，hexBuf 的长度至少是 dataLen * 2 + 1
 */
extern void dataToHexStr(const void *data, size_t dataLen, char *hexBuf);
extern void strToHexStr(const char *str, char *hexBuf);

#ifdef __cplusplus
}
#endif // __cplusplus

#endif // __CUTILS_HEX_UTILS_H__
